# -*- coding: utf-8 -*-
"""
Created on Sun Dec 22 11:10:16 2019

@author: JimmyMo
"""

import pandas as pd
import numpy as np

filepath = "D:/projects/amazon_s3/category=10079992011_raw.csv"
filepath = "D:/projects/amazon_analysis/emr/steps/v1_data/data/Analytics/optimalPrice/BestSellers/batch20190930_testing/category=1063292/part-00000-91c81187-d32d-4752-8d9a-8e90ff74acf0.c000.csv"
data = pd.read_csv(filepath)
df = data[['rank', 'price']]

asin_col = data['asin']

#linkage 有三种
#complete(maximum) linkage: 两类间的距离用最远点距离表示。
#average linkage:平均距离。
#ward's method: 以组内平方和最小，组间平方和最大为目的。
#连接方法linkage指的是衡量簇与簇之间的远近程度的方法。具体说来包括最小距离，最大距离和平均距离三种方式。
#对应于簇融合的方法，即簇间观测点之间的最小距离作为簇的距离，簇间观测点之间的最大距离作为簇的距离，以及簇间观测点之间的平均距离作为簇的距离。
#一般说来，平均距离是一种折中的方法。

from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
import time

startTm = time.time()
clustering = AgglomerativeClustering(linkage = 'ward', n_clusters=3).fit(df.values)
endTm = time.time()

print("cost %s ms" % (endTm - startTm))

y_pred = clustering.labels_.tolist()

plt.scatter(df.values[:, 0], df.values[:, 1], c=y_pred)
plt.show()
print(y_pred)
#print(type(y_pred.tolist()))